/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.senaclem.persistencia;

import co.edu.senaclem.modelo.AsignaFichas;
import co.edu.senaclem.modelo.FichaTitulacion;
import co.edu.senaclem.modelo.Instructor;
import static co.edu.senaclem.persistencia.Persistencia.areadb;
import static co.edu.senaclem.persistencia.Persistencia.con;
import static co.edu.senaclem.persistencia.Persistencia.conectar;
import static co.edu.senaclem.persistencia.Persistencia.desconectar;
import java.sql.ResultSet;
import javax.ejb.Stateless;

/**
 *
 * @author DILOVE
 */
@Stateless
public class AsignaFichasDAO implements IAsignaFichasDAO {
    public static ResultSet resSet=null;

    @Override
    public void registrar(AsignaFichas asignafichas) throws Exception{
        try {
            if (conectar()) {
                String consulta = "insert into asignafichas (fichatitulacion,documentoinstructor) values('" + asignafichas.getFicha().getFicha()+ "','" + asignafichas.getInstructor().getDocumento()+ "')";
                areadb = con.createStatement();
                areadb.execute(consulta);

                desconectar();
            }
        } catch (RuntimeException e) {
            throw e;
        }
    }

    @Override
    public int generarCodigo() throws Exception{
        try {
            int max=0;
            if (conectar()) {
                String consulta = "Select max(a.codigoasigna) as maximo From Asignafichas a";
                areadb = con.createStatement();
                resSet = areadb.executeQuery(consulta);

                if (resSet.next()) {
                    max= resSet.getInt("maximo");                    
                    //System.out.println("numero "+max);                    
                }

                resSet.close();
                desconectar();
            }

            return (max+1);
        } catch (RuntimeException e) {
            throw e;
        }        
    }

    @Override
    public int consultarCodigo(Long documentoInstructor, Integer fichaTitulacion) throws Exception{
        try {
            int max=0; 
            if (conectar()) {
                String consulta = "Select a.codigoasigna as maximo From Asignafichas a where a.documentoinstructor='"+documentoInstructor+"' and a.fichatitulacion='"+fichaTitulacion+"'";
                areadb = con.createStatement();
                resSet = areadb.executeQuery(consulta);

                if (resSet.next()) {
                    max= resSet.getInt("maximo");                    
                    //System.out.println("numero "+max);                    
                }

                resSet.close();
                desconectar();
            }
            
           return max;
        } catch (RuntimeException e) {            
            throw e;
        }
    }

    @Override
    public AsignaFichas consultarPorId(int codigoAsigna) throws Exception{
       try {
            AsignaFichas miAsignaFichas = null;
            if (conectar()) {
                String consulta = "Select * From asignafichas where codigoasigna='" + codigoAsigna + "'";
                areadb = con.createStatement();
                resSet = areadb.executeQuery(consulta);

                if (resSet.next()) {
                    miAsignaFichas = new AsignaFichas();
                    miAsignaFichas.setCodigo(codigoAsigna);
                    //se guardan en variables los campos para evitar acceder a resultset ya cerrados
                    int ficha=resSet.getInt("fichatitulacion");
                    Long documentoInstructor=resSet.getLong("documentoinstructor");
                    
                    //se consulta la ficha
                    IFichaTitulacionDAO fichaTitulacionDAO=new FichaTitulacionDAO();
                    FichaTitulacion miFichaTitulacion=fichaTitulacionDAO.consultarPorId(ficha);
                    miAsignaFichas.setFicha(miFichaTitulacion);
                    //se consulta el instructor
                    IInstructorDAO instructorDAO=new InstructorDAO();
                    Instructor miInstructor=instructorDAO.consultarPorId(documentoInstructor);
                    miAsignaFichas.setInstructor(miInstructor);                    
                }

                resSet.close();
                desconectar();
            }

            return miAsignaFichas;
        } catch (RuntimeException e) {
            throw e;
        }
    }
}
